package com.kcsj.utils.tcp;

import java.io.*;
import java.net.Socket;

/**
 *    Server端Listen监听某个端口是否有连接请求，Client端向Server 端发出连接请求，Server端向Client端发回Accept接受消息。这样一个连接就建立起来了。Server端和Client端都可以通过Send，Write等方法与对方通信。
 *
 *
 *
 *         对于一个功能齐全的Socket，都要包含以下基本结构，其工作过程包含以下四个基本的步骤：
 *
 *         1、创建Socket；
 *
 * 　　 2、 打开连接到Socket的输入/出流；
 *
 *         3、按照一定的协议对Socket进行读/写操作；
 *
 *         4、关闭Socket。
 *
 *     3.1 基于TCP的socket实现
 * ————————————————
 * 版权声明：本文为CSDN博主「石硕页」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。
 * 原文链接：https://blog.csdn.net/u014209205/article/details/80461122
 */
public class SocketClient {

	public static void main(String[] args) throws InterruptedException {
		try {
			// 和服务器创建连接
			Socket socket = new Socket("localhost", 8088);

			// 要发送给服务器的信息
			OutputStream os = socket.getOutputStream();
			PrintWriter pw = new PrintWriter(os);
			pw.write("客户端发送信息");
			pw.flush();

			socket.shutdownOutput();

			// 从服务器接收的信息
			InputStream is = socket.getInputStream();
			BufferedReader br = new BufferedReader(new InputStreamReader(is));
			String info = null;
			while ((info = br.readLine()) != null) {
				System.out.println("我是客户端，服务器返回信息：" + info);
			}

			br.close();
			is.close();
			os.close();
			pw.close();
			socket.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}